package com.tgy.myplus.基础学习.方法引用;



/***
 * @ClassName: Person
 * @Description: 方法引用练习
 * @Auther: 送一一块二向箔
 * @Date: 17:15 2022/1/12
 * @version : V1.0
 */
public class Person {
    private String name;

    public String getName() {
        return name;
    }

    public String setName(String name) {
        this.name = name+"666";
        return this.name;
    }

    /**
     * lambda表达式可用方法引用代替的场景可以简要概括为：lambda表达式的主体仅包含一个表达式，
     * 且该表达式仅调用了一个已经存在的方法。方法引用的通用特性：方法引用所使用方法的入参和返回值与
     * lambda表达式实现的函数式接口的入参和返回值一致。
     * @param args
     */

    public static void main(String[] args) {
        Love love = (a)->new Person().setName(a) ;
        System.out.println(love.sayLove("aaa"));

        love = new Person()::setName ;
        System.out.println(love.sayLove("bbb"));
    }

    interface Love{
        String sayLove(String a);
    }

}
